//
//  main.m
//  OC03_属性_点语法
//
//  Created by dllo on 16/2/26.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Fraction.h"
int main(int argc, const char * argv[]) {
    
#pragma mark - 知识点1. 属性
    /**
     * 属性实现了是三个功能 : 1.声明了一个实例变量.
                           2.声明了setter getter方法
                     3.实现了setter getter方法
     *
     * 详见person 类文件
     */
#pragma mark - 知识点2. 属性的特性
    /** 
     * 属性的特性有三个: 读写性, 原子性, 语义设置
     *属性的特征的目的: 控制setter getter方法实现的细节.
     *
     *读写性特性的选项:readonly, readwrite ,setter= ,getter=.
     默认是 readwrite
     常用的是 readwrite
     
     *原子特性的选项:atomic nonatomic
       默认的是 atomic
       常用是  nonatomic
     *
     *语义设置特性的选项:assign  retain copy
        默认的是 assign
         非对象类型(int NSIntger)使用 assign
        对象类型(NSString) 使用 retain
      对象类型并且想获取副本 使用copy.
     *
     * 详见Person.h 文件
     */
    
    
    
    
    
#pragma mark - 知识点3. 点语法
    /** 点语法只适用于setter getter方法
     */
    
    //创建对象
    Person *per1 = [Person person];
    
    //点语法对属性赋值
    per1.name = @"tom";
    per1.sex = @"male";
    per1.age = 18;
    
    NSLog(@"name:%@, sex:%@, age:%ld", per1.name, per1.sex, per1.age);
    
    Person *per2 = [Person person];
    per2.name = per1.name;
    
    NSLog(@"name:%@",per2.name);
    Person *per = [Person personWithName:@"2" sex:@"nan" age:13];
    NSLog(@"name:%@, sex:%@, age:%ld",per.name,per.sex,per.age);
    
    
    
    
#pragma mark - 综合练习(分数)
    /**
     * 创建一个Fraction类(分数)实现分数的加减乘除, ⽐较⼤小、约分等方法。
     * 提示：
     * 1.声明属性 numerator(分子)、denominator(分母)。
     * 2.声明自定义初始化方法、遍历构造器，用于给分子分母赋值。
     * 3.声明功能方法(六个功能).
     */
    Fraction *frac1 = [Fraction fractionWithNumetator:4 denominator:8];
    
    
    Fraction *frac2 = [Fraction fractionWithNumetator:2 denominator:4];
    
    //调用方法
     Fraction *frac3 = [frac1 plusWithFraction:frac2];
//    NSLog(@"sum:%@",frac3);
    NSLog(@"sum:%ld/%ld",frac3.numetator,frac3.denominantor);
    Fraction *frac4 = [frac1 minusWithFractio:frac2];
    NSLog(@"point:%ld/%ld",frac4.numetator,frac4.denominantor);
    
    Fraction *frac5 = [frac1 mulWithFraction:frac2];
    NSLog(@"num :%ld/%ld",frac5.numetator,frac5.denominantor);
    
    Fraction *frac6 = [frac1 divWithFraction:frac2];
    NSLog(@"num1:%ld/%ld",frac6.numetator,frac6.denominantor);
    
    Fraction *f = [frac1 compareWithFracton:frac2];
    NSLog(@"max:%ld/%ld",f.numetator,f.denominantor);
       
    Fraction *f1 = [frac1 yueWithFraction:frac1];
    NSLog(@"num2:%ld / %ld ",f1.numetator,f1.denominantor);
    
    Fraction *f2 = [frac2 yueWithFraction:frac2];
    NSLog(@"num3:%ld/%ld",f2.numetator,f2.denominantor);
    
    //创建person对象
    
//    Person *per = [Person person];
//    
//    //为实例变量赋值
//    
//    [per setName:@"1"];
//    [per setSex:@"nan"];
//    [per setAge:18];
//    
//    NSLog(@"name:%@, sex:%@, age:%ld",[per name],[per sex],[per age]);
//    
    
    
    
    
    
    
    
    
    
    
    return 0;
}
